OVH Cloud OVH Cloud

c , c++ et les jeu video???

177 réponses
Avatar
elekis
bonjour,

j'ai entendu que les jeux videos de nos jours, sont toujours concu en c
et non en c++,
ma quesiton est POUrquoi??, le c++ a quand meme beaucoup plus d'avantage
que le c non

merci


Ps: ceci n'est pas un troll; je suis en premiere année informatique, et
je commence a apprendre le c++, et les differences du c, et etant
passionné de jeu (c'est la dedans que j'aimerais travailler) je me
posait cette question

merci

a++++

10 réponses

Avatar
Marc Boyer
Cyrille Karmann wrote:
Fabien LE LEZ disait...
Oui, mais là le destructeur a un effet de bord, donc le compilo ne
peut pas optimiser en virant certains temporaires.


HAHA! C'est donc pas si simple! ;-)


Ben si, c'est ce qu'on dit: le C++ est globalement
aussi efficace que le C "à fonctionnalité équivalente".
Si t'ajoute des choses, tu les payes.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Marc Boyer
Gabriel Dos Reis wrote:
Marc Boyer writes:
| Gabriel Dos Reis wrote:
| Parce que le programme compile et fonctionne correctement
| sans l'activation de la RTTI ?

Alors, c'est à toi de le dire au compilateur.

| Non, il doit y avoir un truc qui m'échappe.

C'est que avec le modèle de compilation séparée de C++ et la
technologie actuelle des compilateurs, si tu sais que ton prorgramme
n'utiliseras pas la RTTI alors il faut le lui dire. D'ailleurs, il en
profitera ainsi pour vérifier la cohérence des propos si cela lui est
possible.


Oui, le modèle de compilation séparée, j'avais oublié (en fait,
j'y ai pensé dans la soirée, mais j'allais pas me reconnecter
pour crier "euréka")

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Gabriel Dos Reis
Richard Delorme writes:

|
| > Richard Delorme writes:
| >
| > |
| > | > Richard Delorme wrote:
| > | >> Bien sûr un programme C compatible C++ fonctionne à la même vitesse
| > | >> que le compilateur soit en mode C ou C++. Néanmoins les approches
| > | >> offertes par le C++, comme la programmation objet, générique,...
| > | >> peuvent conduire à un programme légèrement plus lent,
| > | >
| > | > Heuh... En quoi la généricité rendrait-elle plus lent ?
| > |
| > | Parce qu'elle prend en compte tous les cas de figure,
| >
| > dans ce cas ce n'est pas de généricité : c'est de la masturbation
| > intellectuelle.
| >
| > La généricité, c'est écrire du code général *pour un ensemble de
| > critères données*. En particulier, lorsqu'on spécialise on doit
| > retrouver au moins la même performance que si on avait écrit le code
| > directement.
| >
| > [...]
|
| Je ne dit pas le contraire, mais la spécialisation n'est qu'une méthode,
| peut-être élégante, de réécrire le code.

Ce que j'appelle spécialisation dans la phrase ci-dessus, c'est
l'action de substituer des valeurs aux paramètres génériques.

-- Gaby
Avatar
Gabriel Dos Reis
"Alain Naigeon" writes:

| "Richard Delorme" a écrit dans le message news:
| 3f819e98$0$24668$
|
| > Parce qu'elle prend en compte tous les cas de figure, tandis que, le plus
| > souvent, on n'a que des cas particuliers à traiter.
|
| C'est sûr que le but de template, c'est d'éviter la situation
| "que des cas particuliers à traiter".
| Il me semble que les bons auteurs insistent sur la possibilité
| de spécialiser un template lorsqu'il y a de bonnes raisons.

Yep.

-- Gaby
Avatar
Gabriel Dos Reis
Richard Delorme writes:

|
| > "Richard Delorme" a écrit dans le message news:
| > 3f819e98$0$24668$
| >
| >> Parce qu'elle prend en compte tous les cas de figure, tandis que, le plus
| >> souvent, on n'a que des cas particuliers à traiter.
| >
| > C'est sûr que le but de template, c'est d'éviter la situation
| > "que des cas particuliers à traiter".
| > Il me semble que les bons auteurs insistent sur la possibilité
| > de spécialiser un template lorsqu'il y a de bonnes raisons.
| > En revanche, pour une classe de la STL, j'avoue ne l'avoir
| > jamais fait, et je ne sais si c'est toujours faisable ou même
| > permis.
|
| Si tu ne l'as jamais fait, cela prouve que c'est une pratique peu courante.

Cela prouve donc. Tiens.

-- Gaby
Avatar
Gabriel Dos Reis
"Alain Naigeon" writes:

| "Fabien LE LEZ" a écrit dans le message news:
|
| > On Mon, 6 Oct 2003 16:59:29 +0200, "Chewee"
| > wrote:
| >
| > >Je travaille moi aussi dans le jeu vidéo et c'est ce que j'ai toujours
| > >entendu...
| >
| > Le C est meilleur que le C++, je le dis depuis 20 ans ;-)
|
| Si tu trolles dans l'espace dual, on ne va plus s'en sortir ;-)

à moins que l'espace ne soit reflexif.

-- Gaby
Avatar
Marc Boyer
Richard Delorme wrote:
Richard Delorme wrote:
En plus, le système est souvent (Unix + X11, Windows, openGL, ...) écrit
en C à la base, et l'utilisation du C++ invite à écrire une surcouche
objet dessus qui introduit un peu de lenteur.


Hum... La encore, je demande à voir pourquoi une surcouche objet
introduirait quoi que ce soit de lenteur.


A mon avis, tu n'a pas idée de la taille d'une surcouche. Prends l'exemple
de Qt/X11 :


Mais ici, il y a surcouche avec ajout de fonctionalités. Rajouter les
mêmes fonctionnalités en C, et on aura le même problème.

Pour dessiner un rectangle sous X11, on utilise la fonction :
XDrawRectangle(display, d, gc, x, y, width, height)
Display *display;
Drawable d;
GC gc;
int x, y;
unsigned int width, height;


Sous Qt (version 3.1.2) l'épaisse surcouche ressemble à :

[SNIP l'épaisse surcouche]


Elle est sans doute plus facile d'utilisation, plus robuste, et tout ce
qu'on veut ; mais, vu tout ce qu'il y a autour de la fonction X11, je ne
vois pas comment elle peut-être aussi rapide.


Mais si elle est plus robuste et plus facile, il y a ajout de
fonctionnalité.
Si le développeur gagne du temps sur le développement,
il peut *ensuite* optimiser les goulots d'étranglement.
Ceci dit, Qt est peut-être une mauvaise surcouche à X11,
peut-être une bonne, je n'ai pas d'avis tranché sur la question
(hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie
de faire autre chose si c'était possible).
Ce que je dis, c'est que le "langage" C++ et la surcouche
objet, à fonctionnalité équivalente, n'est pas plus lente.

Après, il y a toujours la question de la base installée,
qui fait que, si une bibliothèque C est devenue un standard
de fait depuis 20 ans, il y a des chances qu'elle est été
écrite, réécrite et optimisée par les meilleurs spécialistes,
et la première équipe venue ne va pas faire mieux sous prétexte
qu'elle utilise C++.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(



Avatar
Gabriel Dos Reis
Marc Boyer writes:

[...]

| (hormis que le peu de XX1 que j'ai eut à faire m'a donnée envie
| de faire autre chose si c'était possible).

mitou. Sauf que des fois, on est « obligé » de faire avec.

-- Gaby
Avatar
Richard Delorme

Richard Delorme writes:

| > La généricité, c'est écrire du code général *pour un ensemble de
| > critères données*. En particulier, lorsqu'on spécialise on doit
| > retrouver au moins la même performance que si on avait écrit le code
| > directement.
| >
| > [...]
|
| Je ne dit pas le contraire, mais la spécialisation n'est qu'une méthode,
| peut-être élégante, de réécrire le code.

Ce que j'appelle spécialisation dans la phrase ci-dessus, c'est
l'action de substituer des valeurs aux paramètres génériques.


C'est-à-dire ?
- Lors de l'utilisation, comme dans bitset<32>(i).count();
- Ou pour redéfinir des fonctions, comme dans :
class bitset<32> {
size_t count() const {
// algo kivamieu
}
}

--
Richard

Avatar
Richard Delorme

Comme on ne voit pas les appels au constructeurs/destructeurs, on a
tendance

à en minimiser l'impact.


Quel impact?


On parlait de l'impact sur la performance, en particuliers dans les jeux,
les moteurs d'affichage, ...

--
Richard